{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Docker Swarm\n",
    "\n",
    "## 概要\n",
    "\n",
    "* Docker Swarmとは\n",
    "    * Dockerが開発するDockerクラスタ管理・運用ツール\n",
    "* アーキテクチャ\n",
    "    * dockerコマンドとdockerデーモンのやりとり\n",
    "        * デフォルトはUNIXドメインソケット(/var/run/docker.sock) 経由で行う\n",
    "        * ネットワーク(TCP)経由でやり取りを行う事も可能\n",
    "            * Docker Swarmはこれを利用してリモートのDockerデーモンとやり取りする\n",
    "    * Swarm Manager\n",
    "        * 各ノードで動作するDockerデーモンを一括操作する\n",
    "            * クラスタ上のコンテナ管理を実現する\n",
    "        * Docker Daemonと同じAPIを実装している\n",
    "            * ローカルのDockerを利用するのとまったく同じdockerコマンドを使ってコンテナの起動や停止といった管理操作を実行できる\n",
    "* できること\n",
    "    * Dockerクラスタを構成するノードから最適なノードを自動で選択\n",
    "        * ユーザーからのコンテナ作成要求に対し、要求されたコンテナを実行\n",
    "    * 各ノードで実行されているコンテナの状況を取得\n",
    "    * コンテナの停止や再起動\n",
    "    * トラブル対応\n",
    "        * トラブルで停止した場合などに、停止したコンテナを別のノードで実行させる機能もある\n",
    "* できないこと\n",
    "    * コンテナ間のネットワーク的な接続やルーティングについてはDockerが備えている以上の機能は提供されない\n",
    "    * コンテナイメージの管理についても、Docker Swarmが特別な機能を提供するわけではない\n",
    "        * Docker HubやDocker registryを利用する\n",
    "* port\n",
    "    * 2377(tcp) : クラスタ管理\n",
    "    * 7946(tcp/udp) : ノード間通信\n",
    "    * 4789(tcp) : オーバーレイネットワーク"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## [Service](https://docs.docker.com/get-started/part3/)\n",
    "\n",
    "* サービスとは\n",
    "    * ある環境の中野コンテナ群\n",
    "        * あるサービスの中では1つのイメージが使われる\n",
    "        * 以下設定されている\n",
    "            * どのportを利用するか\n",
    "            * レプリカをいくつ作るか\n",
    "* docker-compose\n",
    "    * サービスを定義するファイル\n",
    "   "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
